In many structured software design methodologies, a software design document is a written description of a software product. Typically, a software designer may develop a software design document in order to provide a software development team guidance during the design of the overall architecture and individual functionalities of a software project. The software design document may include a detailed list of specifications that define how the software will behave according to various possible inputs. An overall design may be included such that a software development team can operate according to a single vision, while also providing details such as a data design, an architecture design, an interface design, and/or a procedural design. The complexity of a software design document can generally be considered proportional to the complexity of the underlying software project.